package org.nbile.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * Hash计算工具类
 * Created by songwenpeng on 2017/4/6.
 */
public class HashUtils {


    /**
     * 获取输入数据的SHA256Hash值
     * @param data
     * @return
     */
    public static String getSHA256Hash(String data) {
        // 返回值
        String strResult = null;

        // 是否是有效字符串
        if (data != null && data.length() > 0) {
            try {
                // SHA 加密开始
                // 创建加密对象 并傳入加密类型
                MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
                // 传入要加密的字符串
                messageDigest.update(data.getBytes());
                // 得到 byte 类型结果
                byte byteBuffer[] = messageDigest.digest();

                // 将 byte 转换为16进制 string
                StringBuffer strHexString = new StringBuffer();
                // 遍历 byte buffer
                for (int i = 0; i < byteBuffer.length; i++) {
                    String hex = Integer.toHexString(0xff & byteBuffer[i]);
                    if (hex.length() == 1) {
                        strHexString.append('0');
                    }
                    strHexString.append(hex);
                }
                // 得到返回結果
                strResult = strHexString.toString();
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        return strResult;
    }
}
